package com.hsh.erp.domain.dto;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;

/**
 * product
 */
@Data
@Accessors(chain = true)
public class ProductDTO implements Serializable {
    /**
     *
     */
    private Integer id;

    /**
     * 商品名称（需要加上单位：板、粒...）
     */
    private String name;

    /**
     * 商品简称（与导入文件交互，优先使用简称）
     */
    private String simpleName;

    /**
     * 商品类型 0-常规商品 1-不发货商品
     */
    private Integer type;

    /**
     * 入库成本：分
     */
    private Integer costCent;

    /**
     * 入库成本：元
     */
    private BigDecimal costYuan;

    /**
     * 重量：g
     */
    private Integer weightGram;

    /**
     * 库存数量：散装库存
     */
    private Integer num;

    /**
     * 库存数量（盒/箱）
     */
    private BigDecimal boxNum;

    /**
     * 近30天销售数量（盒/箱）
     */
    private BigDecimal warnBoxNum;

    /**
     * 每盒(/箱)多少个
     */
    private Integer perBox;

    /**
     * 仓库id
     */
    private Integer repositoryId;

    /**
     * 仓库名称
     */
    private String repositoryName;
    /**
     * 备注
     */
    private String note;

    /**
     * 是否删除 0-未删除 1-已删除
     */
    private Integer isDelete;

    /**
     * sku码
     */
    private String skuNo;

    /**
     * 初始化
     * 入库成本：元 costYuan
     * 盒装数量    boxNum
     */
    public void init() {
        this.costYuan = BigDecimal.valueOf(this.costCent, 2);
        this.num = (this.num == null ? 0 : this.num);
        this.boxNum = BigDecimal.valueOf(this.num).divide(BigDecimal.valueOf(this.perBox), 2, RoundingMode.HALF_UP);
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof ProductDTO)) return false;
        ProductDTO that = (ProductDTO) o;
        return Objects.equals(name, that.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}